package org.com.system.util.utils;

import java.util.Collection;
import java.util.List;

import org.com.system.util.processor.StringValueProcessor;

public class CollectionUtils {

	/**
	 * 判断字符串是否为NULL，NULL：true，NOT NULL:false
	 * @param str
	 * @return
	 */
	public static boolean isNull(Collection<?> collection){
	     boolean result=false;
	     if(null==collection){
	    	 result=true;
	     }
	     return result;
	}
	
	/**
	 * 判断字符串是否为NULL，NULL：false，NOT NULL:true
	 * @param str
	 * @return
	 */
	public static boolean isNotNull(Collection<?> collection){
		return !isNull(collection);
	}
	
	/**
	 * 判断字符串是否为空，空：true，非空:false
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(Collection<?> collection){
	     boolean result=false;
	     if(isNull(collection)||(!isNull(collection))&&0==collection.size()){
	    	 result=true;
	     }
	     return result;
	}
	
	/**
	 * 判断字符串是否为空，空：false，非空:true
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(Collection<?> collection){
	     return !isEmpty(collection);
	}
	
	/**
	 * 判断字符串是否为空，空：false，非空:true
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(Object[] array){
		if(null!=array&&array.length>0){
			return true;
		}
	     return false;
	}
	
	/**
	 * 判断字符串是否为空，空：false，非空:true
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(List<?> array){
		if(null!=array&&array.size()>0){
			return true;
		}
	     return false;
	}
	
	/**
	 * 除去数组中的指定值(不分大小写)
	 * @param args
	 */
	public static String[] cutValue(String[] values,String value){
		String[] result=null;
		int size=values.length;
		result=new String[size-1];
		for(int i=0,k=0;i<size&&k<size-1;i++){
			if(!value.equalsIgnoreCase(values[i])){
				result[k]=values[i];
				k++;
			}
		}
		return result;
	}
	
	/**
	 * 替换数组中的NULL值为指定值
	 * @param args
	 */
	public static String[] replaceNullValues(String[] values,String value){
		int size=values.length;
		for(int i=0;i<size;i++){
			if(StrUtils.isNull(values[i])){
				values[i]=value;
			}
		}
		return values;
	}
	
	/**
	 * 替换数组中的值进行处理
	 * @param args
	 */
	public static String[] processValues(String[] values,StringValueProcessor processor){
		int size=values.length;
		for(int i=0;i<size;i++){
			values[i]=processor.process(values[i]);
		}
		return values;
	}
	
	/**
	 * 将数组中的第一项移到为最后一项
	 */
	public static void moveFirstToLast(String[] values){
		int i=0;
		int size=values.length;
		String temp=null;
		for(;i<size-1;i++){
			if(0==i){
			    temp=values[i];	
			}
			values[i]=values[i+1];
		}
		values[i]=temp;
	}
	
}
